package com.xia.dao.article;

import com.xia.domian.Article;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 文章数据层
 */
@Repository
public interface IArticleDao{

    /**
     * 查询除了条件以外的文章
     */
    List<Article> selectNotInArticleId(Map<String,Object> map);

    /**
     * 查询评论数量前十的文章
     */
    List<Article> selectHotList();

    /**
     * 查询用户所关注用户的动态（发布，点赞，收藏）按操作时间排序
     * @param map 装有 1：被登录用户关注的用户ID 2：分页下标
     */

    List<Article> selectDynamicSort(Map<String,Object> map);
    /**
     * 查询用户发布的帖子/文章浏览量和点赞
     */
    List<Article> selectArticlePageViewAndLike(Integer usersId);

    /**
     * 查询该收藏夹的文章/帖子
     * @param collectId 收藏夹ID
     */
    List<Article> selectCollectArticleUsers(Integer collectId);

    /**
     * 插入文章数据
     *
     * @param article 文章或帖子类
     */
    int insertArticle(Article article);

    /**
     * 修改文章浏览量
     */
    void updateArticle(Article article);

    /**
     *根据条件查询文章表，用户表，社区表之间的信息
     * @param articlePost 文章/帖子辨识 2：帖子 1：文章
     * @param articleId 文章ID
     * @param communityId 社区ID
     * @param usersId 用户ID
     * @return Article 组合类（查询数据的字段）
     */
    List<Article> selectArticleOnId(@Param("articlePost") Integer articlePost,@Param("articleId") Integer articleId,@Param("communityId") Integer communityId,@Param("usersId") Integer usersId);

    /**
     * 根据条件查询文章ID
     * @param communityId 社区ID
     * @param articlePost 文章/帖子的辨识 2：帖子 1：文章
     * @return Integer 返回文章ID
     */
    List<Integer> selectArticleId(Integer communityId,Integer articlePost);

    /**
     *根据搜索内容模糊查询
     * @param searchContent 需要搜索的内容
     * @return Article 组合类（查询数据的字段）
     */
    List<Article> selectLikeArticle(String searchContent);

    /**
     * 根据文章ID查询文章
     */
    Article selectArticleContentId(Integer articleId);

    /**
     * 根据文章/帖子ID删除
     */
    void deleteArticle(Integer articleId);

}
